home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- public class Collections {
- private static final int BINARYSEARCH_THRESHOLD = 5000;
- private static final int REVERSE_THRESHOLD = 18;
- private static final int SHUFFLE_THRESHOLD = 5;
- private static final int FILL_THRESHOLD = 25;
- private static final int ROTATE_THRESHOLD = 100;
- private static final int COPY_THRESHOLD = 10;
- private static final int REPLACEALL_THRESHOLD = 11;
- private static final int INDEXOFSUBLIST_THRESHOLD = 35;
- // $FF: renamed from: r java.util.Random
- private static Random field_0;
- public static final Set EMPTY_SET = new EmptySet((1)null);
- public static final List EMPTY_LIST = new EmptyList((1)null);
- public static final Map EMPTY_MAP = new EmptyMap((1)null);
- private static final Comparator REVERSE_ORDER = new ReverseComparator((1)null);
-
- private Collections() {
- }
-
- public static <T extends Comparable<? super T>> void sort(List<T> var0) {
- Object[] var1 = var0.toArray();
- Arrays.sort(var1);
- ListIterator var2 = var0.listIterator();
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- var2.next();
- var2.set((Comparable)var1[var3]);
- }
-
- }
-
- public static <T> void sort(List<T> var0, Comparator<? super T> var1) {
- Object[] var2 = var0.toArray();
- Arrays.sort(var2, var1);
- ListIterator var3 = var0.listIterator();
-
- for(int var4 = 0; var4 < var2.length; ++var4) {
- var3.next();
- var3.set(var2[var4]);
- }
-
- }
-
- public static <T> int binarySearch(List<? extends Comparable<? super T>> var0, T var1) {
- return !(var0 instanceof RandomAccess) && var0.size() >= 5000 ? iteratorBinarySearch(var0, var1) : indexedBinarySearch(var0, var1);
- }
-
- private static <T> int indexedBinarySearch(List<? extends Comparable<? super T>> var0, T var1) {
- int var2 = 0;
- int var3 = var0.size() - 1;
-
- while(var2 <= var3) {
- int var4 = var2 + var3 >>> 1;
- Comparable var5 = (Comparable)var0.get(var4);
- int var6 = var5.compareTo(var1);
- if (var6 < 0) {
- var2 = var4 + 1;
- } else {
- if (var6 <= 0) {
- return var4;
- }
-
- var3 = var4 - 1;
- }
- }
-
- return -(var2 + 1);
- }
-
- private static <T> int iteratorBinarySearch(List<? extends Comparable<? super T>> var0, T var1) {
- int var2 = 0;
- int var3 = var0.size() - 1;
- ListIterator var4 = var0.listIterator();
-
- while(var2 <= var3) {
- int var5 = var2 + var3 >>> 1;
- Comparable var6 = (Comparable)get(var4, var5);
- int var7 = var6.compareTo(var1);
- if (var7 < 0) {
- var2 = var5 + 1;
- } else {
- if (var7 <= 0) {
- return var5;
- }
-
- var3 = var5 - 1;
- }
- }
-
- return -(var2 + 1);
- }
-
- private static <T> T get(ListIterator<? extends T> var0, int var1) {
- Object var2 = null;
- int var3 = var0.nextIndex();
- if (var3 <= var1) {
- do {
- var2 = var0.next();
- } while(var3++ < var1);
- } else {
- do {
- var2 = var0.previous();
- --var3;
- } while(var3 > var1);
- }
-
- return (T)var2;
- }
-
- public static <T> int binarySearch(List<? extends T> var0, T var1, Comparator<? super T> var2) {
- if (var2 == null) {
- return binarySearch(var0, var1);
- } else {
- return !(var0 instanceof RandomAccess) && var0.size() >= 5000 ? iteratorBinarySearch(var0, var1, var2) : indexedBinarySearch(var0, var1, var2);
- }
- }
-
- private static <T> int indexedBinarySearch(List<? extends T> var0, T var1, Comparator<? super T> var2) {
- int var3 = 0;
- int var4 = var0.size() - 1;
-
- while(var3 <= var4) {
- int var5 = var3 + var4 >>> 1;
- Object var6 = var0.get(var5);
- int var7 = var2.compare(var6, var1);
- if (var7 < 0) {
- var3 = var5 + 1;
- } else {
- if (var7 <= 0) {
- return var5;
- }
-
- var4 = var5 - 1;
- }
- }
-
- return -(var3 + 1);
- }
-
- private static <T> int iteratorBinarySearch(List<? extends T> var0, T var1, Comparator<? super T> var2) {
- int var3 = 0;
- int var4 = var0.size() - 1;
- ListIterator var5 = var0.listIterator();
-
- while(var3 <= var4) {
- int var6 = var3 + var4 >>> 1;
- Object var7 = get(var5, var6);
- int var8 = var2.compare(var7, var1);
- if (var8 < 0) {
- var3 = var6 + 1;
- } else {
- if (var8 <= 0) {
- return var6;
- }
-
- var4 = var6 - 1;
- }
- }
-
- return -(var3 + 1);
- }
-
- public static void reverse(List<?> var0) {
- int var1 = var0.size();
- if (var1 >= 18 && !(var0 instanceof RandomAccess)) {
- ListIterator var7 = var0.listIterator();
- ListIterator var8 = var0.listIterator(var1);
- int var9 = 0;
-
- for(int var5 = var0.size() >> 1; var9 < var5; ++var9) {
- Object var6 = var7.next();
- var7.set(var8.previous());
- var8.set(var6);
- }
- } else {
- int var2 = 0;
- int var3 = var1 >> 1;
-
- for(int var4 = var1 - 1; var2 < var3; --var4) {
- swap(var0, var2, var4);
- ++var2;
- }
- }
-
- }
-
- public static void shuffle(List<?> var0) {
- if (field_0 == null) {
- field_0 = new Random();
- }
-
- shuffle(var0, field_0);
- }
-
- public static void shuffle(List<?> var0, Random var1) {
- int var2 = var0.size();
- if (var2 >= 5 && !(var0 instanceof RandomAccess)) {
- Object[] var6 = var0.toArray();
-
- for(int var4 = var2; var4 > 1; --var4) {
- swap(var6, var4 - 1, var1.nextInt(var4));
- }
-
- ListIterator var7 = var0.listIterator();
-
- for(int var5 = 0; var5 < var6.length; ++var5) {
- var7.next();
- var7.set(var6[var5]);
- }
- } else {
- for(int var3 = var2; var3 > 1; --var3) {
- swap(var0, var3 - 1, var1.nextInt(var3));
- }
- }
-
- }
-
- public static void swap(List<?> var0, int var1, int var2) {
- var0.set(var1, var0.set(var2, var0.get(var1)));
- }
-
- private static void swap(Object[] var0, int var1, int var2) {
- Object var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- public static <T> void fill(List<? super T> var0, T var1) {
- int var2 = var0.size();
- if (var2 >= 25 && !(var0 instanceof RandomAccess)) {
- ListIterator var5 = var0.listIterator();
-
- for(int var4 = 0; var4 < var2; ++var4) {
- var5.next();
- var5.set(var1);
- }
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- var0.set(var3, var1);
- }
- }
-
- }
-
- public static <T> void copy(List<? super T> var0, List<? extends T> var1) {
- int var2 = var1.size();
- if (var2 > var0.size()) {
- throw new IndexOutOfBoundsException("Source does not fit in dest");
- } else {
- if (var2 < 10 || var1 instanceof RandomAccess && var0 instanceof RandomAccess) {
- for(int var6 = 0; var6 < var2; ++var6) {
- var0.set(var6, var1.get(var6));
- }
- } else {
- ListIterator var3 = var0.listIterator();
- ListIterator var4 = var1.listIterator();
-
- for(int var5 = 0; var5 < var2; ++var5) {
- var3.next();
- var3.set(var4.next());
- }
- }
-
- }
- }
-
- public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> var0) {
- Iterator var1 = var0.iterator();
- Object var2 = var1.next();
-
- while(var1.hasNext()) {
- Object var3 = var1.next();
- if (((Comparable)var3).compareTo(var2) < 0) {
- var2 = var3;
- }
- }
-
- return (T)var2;
- }
-
- public static <T> T min(Collection<? extends T> var0, Comparator<? super T> var1) {
- if (var1 == null) {
- return (T)min(var0);
- } else {
- Iterator var2 = var0.iterator();
- Object var3 = var2.next();
-
- while(var2.hasNext()) {
- Object var4 = var2.next();
- if (var1.compare(var4, var3) < 0) {
- var3 = var4;
- }
- }
-
- return (T)var3;
- }
- }
-
- public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> var0) {
- Iterator var1 = var0.iterator();
- Object var2 = var1.next();
-
- while(var1.hasNext()) {
- Object var3 = var1.next();
- if (((Comparable)var3).compareTo(var2) > 0) {
- var2 = var3;
- }
- }
-
- return (T)var2;
- }
-
- public static <T> T max(Collection<? extends T> var0, Comparator<? super T> var1) {
- if (var1 == null) {
- return (T)max(var0);
- } else {
- Iterator var2 = var0.iterator();
- Object var3 = var2.next();
-
- while(var2.hasNext()) {
- Object var4 = var2.next();
- if (var1.compare(var4, var3) > 0) {
- var3 = var4;
- }
- }
-
- return (T)var3;
- }
- }
-
- public static void rotate(List<?> var0, int var1) {
- if (!(var0 instanceof RandomAccess) && var0.size() >= 100) {
- rotate2(var0, var1);
- } else {
- rotate1(var0, var1);
- }
-
- }
-
- private static <T> void rotate1(List<T> var0, int var1) {
- int var2 = var0.size();
- if (var2 != 0) {
- var1 %= var2;
- if (var1 < 0) {
- var1 += var2;
- }
-
- if (var1 != 0) {
- int var3 = 0;
-
- for(int var4 = 0; var4 != var2; ++var3) {
- Object var5 = var0.get(var3);
- int var6 = var3;
-
- while(true) {
- var6 += var1;
- if (var6 >= var2) {
- var6 -= var2;
- }
-
- var5 = var0.set(var6, var5);
- ++var4;
- if (var6 == var3) {
- break;
- }
- }
- }
-
- }
- }
- }
-
- private static void rotate2(List<?> var0, int var1) {
- int var2 = var0.size();
- if (var2 != 0) {
- int var3 = -var1 % var2;
- if (var3 < 0) {
- var3 += var2;
- }
-
- if (var3 != 0) {
- reverse(var0.subList(0, var3));
- reverse(var0.subList(var3, var2));
- reverse(var0);
- }
- }
- }
-
- public static <T> boolean replaceAll(List<T> var0, T var1, T var2) {
- boolean var3 = false;
- int var4 = var0.size();
- if (var4 >= 11 && !(var0 instanceof RandomAccess)) {
- ListIterator var8 = var0.listIterator();
- if (var1 == null) {
- for(int var6 = 0; var6 < var4; ++var6) {
- if (var8.next() == null) {
- var8.set(var2);
- var3 = true;
- }
- }
- } else {
- for(int var9 = 0; var9 < var4; ++var9) {
- if (var1.equals(var8.next())) {
- var8.set(var2);
- var3 = true;
- }
- }
- }
- } else if (var1 == null) {
- for(int var5 = 0; var5 < var4; ++var5) {
- if (var0.get(var5) == null) {
- var0.set(var5, var2);
- var3 = true;
- }
- }
- } else {
- for(int var7 = 0; var7 < var4; ++var7) {
- if (var1.equals(var0.get(var7))) {
- var0.set(var7, var2);
- var3 = true;
- }
- }
- }
-
- return var3;
- }
-
- public static int indexOfSubList(List<?> var0, List<?> var1) {
- int var2 = var0.size();
- int var3 = var1.size();
- int var4 = var2 - var3;
- if (var2 < 35 || var0 instanceof RandomAccess && var1 instanceof RandomAccess) {
- label60:
- for(int var10 = 0; var10 <= var4; ++var10) {
- int var11 = 0;
-
- for(int var12 = var10; var11 < var3; ++var12) {
- if (!method_0(var1.get(var11), var0.get(var12))) {
- continue label60;
- }
-
- ++var11;
- }
-
- return var10;
- }
- } else {
- ListIterator var5 = var0.listIterator();
-
- label48:
- for(int var6 = 0; var6 <= var4; ++var6) {
- ListIterator var7 = var1.listIterator();
-
- for(int var8 = 0; var8 < var3; ++var8) {
- if (!method_0(var7.next(), var5.next())) {
- for(int var9 = 0; var9 < var8; ++var9) {
- var5.previous();
- }
- continue label48;
- }
- }
-
- return var6;
- }
- }
-
- return -1;
- }
-
- public static int lastIndexOfSubList(List<?> var0, List<?> var1) {
- int var2 = var0.size();
- int var3 = var1.size();
- int var4 = var2 - var3;
- if (var2 >= 35 && !(var0 instanceof RandomAccess)) {
- if (var4 < 0) {
- return -1;
- }
-
- ListIterator var10 = var0.listIterator(var4);
-
- label54:
- for(int var11 = var4; var11 >= 0; --var11) {
- ListIterator var12 = var1.listIterator();
-
- for(int var8 = 0; var8 < var3; ++var8) {
- if (!method_0(var12.next(), var10.next())) {
- if (var11 != 0) {
- for(int var9 = 0; var9 <= var8 + 1; ++var9) {
- var10.previous();
- }
- }
- continue label54;
- }
- }
-
- return var11;
- }
- } else {
- label66:
- for(int var5 = var4; var5 >= 0; --var5) {
- int var6 = 0;
-
- for(int var7 = var5; var6 < var3; ++var7) {
- if (!method_0(var1.get(var6), var0.get(var7))) {
- continue label66;
- }
-
- ++var6;
- }
-
- return var5;
- }
- }
-
- return -1;
- }
-
- public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> var0) {
- return new UnmodifiableCollection(var0);
- }
-
- public static <T> Set<T> unmodifiableSet(Set<? extends T> var0) {
- return new UnmodifiableSet(var0);
- }
-
- public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> var0) {
- return new UnmodifiableSortedSet(var0);
- }
-
- public static <T> List<T> unmodifiableList(List<? extends T> var0) {
- return (List<T>)(var0 instanceof RandomAccess ? new UnmodifiableRandomAccessList(var0) : new UnmodifiableList(var0));
- }
-
- public static <K, V> Map<K, V> unmodifiableMap(Map<? extends K, ? extends V> var0) {
- return new UnmodifiableMap(var0);
- }
-
- public static <K, V> SortedMap<K, V> unmodifiableSortedMap(SortedMap<K, ? extends V> var0) {
- return new UnmodifiableSortedMap(var0);
- }
-
- public static <T> Collection<T> synchronizedCollection(Collection<T> var0) {
- return new SynchronizedCollection(var0);
- }
-
- static <T> Collection<T> synchronizedCollection(Collection<T> var0, Object var1) {
- return new SynchronizedCollection(var0, var1);
- }
-
- public static <T> Set<T> synchronizedSet(Set<T> var0) {
- return new SynchronizedSet(var0);
- }
-
- static <T> Set<T> synchronizedSet(Set<T> var0, Object var1) {
- return new SynchronizedSet(var0, var1);
- }
-
- public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> var0) {
- return new SynchronizedSortedSet(var0);
- }
-
- public static <T> List<T> synchronizedList(List<T> var0) {
- return (List<T>)(var0 instanceof RandomAccess ? new SynchronizedRandomAccessList(var0) : new SynchronizedList(var0));
- }
-
- static <T> List<T> synchronizedList(List<T> var0, Object var1) {
- return (List<T>)(var0 instanceof RandomAccess ? new SynchronizedRandomAccessList(var0, var1) : new SynchronizedList(var0, var1));
- }
-
- public static <K, V> Map<K, V> synchronizedMap(Map<K, V> var0) {
- return new SynchronizedMap(var0);
- }
-
- public static <K, V> SortedMap<K, V> synchronizedSortedMap(SortedMap<K, V> var0) {
- return new SynchronizedSortedMap(var0);
- }
-
- public static <E> Collection<E> checkedCollection(Collection<E> var0, Class<E> var1) {
- return new CheckedCollection(var0, var1);
- }
-
- public static <E> Set<E> checkedSet(Set<E> var0, Class<E> var1) {
- return new CheckedSet(var0, var1);
- }
-
- public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> var0, Class<E> var1) {
- return new CheckedSortedSet(var0, var1);
- }
-
- public static <E> List<E> checkedList(List<E> var0, Class<E> var1) {
- return (List<E>)(var0 instanceof RandomAccess ? new CheckedRandomAccessList(var0, var1) : new CheckedList(var0, var1));
- }
-
- public static <K, V> Map<K, V> checkedMap(Map<K, V> var0, Class<K> var1, Class<V> var2) {
- return new CheckedMap(var0, var1, var2);
- }
-
- public static <K, V> SortedMap<K, V> checkedSortedMap(SortedMap<K, V> var0, Class<K> var1, Class<V> var2) {
- return new CheckedSortedMap(var0, var1, var2);
- }
-
- public static final <T> Set<T> emptySet() {
- return EMPTY_SET;
- }
-
- public static final <T> List<T> emptyList() {
- return EMPTY_LIST;
- }
-
- public static final <K, V> Map<K, V> emptyMap() {
- return EMPTY_MAP;
- }
-
- public static <T> Set<T> singleton(T var0) {
- return new SingletonSet(var0);
- }
-
- public static <T> List<T> singletonList(T var0) {
- return new SingletonList(var0);
- }
-
- public static <K, V> Map<K, V> singletonMap(K var0, V var1) {
- return new SingletonMap(var0, var1);
- }
-
- public static <T> List<T> nCopies(int var0, T var1) {
- if (var0 < 0) {
- throw new IllegalArgumentException("List length = " + var0);
- } else {
- return new CopiesList(var0, var1);
- }
- }
-
- public static <T> Comparator<T> reverseOrder() {
- return REVERSE_ORDER;
- }
-
- public static <T> Comparator<T> reverseOrder(Comparator<T> var0) {
- return (Comparator<T>)(var0 == null ? reverseOrder() : new ReverseComparator2(var0));
- }
-
- public static <T> Enumeration<T> enumeration(Collection<T> var0) {
- return new 1(var0);
- }
-
- public static <T> ArrayList<T> list(Enumeration<T> var0) {
- ArrayList var1 = new ArrayList();
-
- while(var0.hasMoreElements()) {
- var1.add(var0.nextElement());
- }
-
- return var1;
- }
-
- // $FF: renamed from: eq (java.lang.Object, java.lang.Object) boolean
- private static boolean method_0(Object var0, Object var1) {
- return var0 == null ? var1 == null : var0.equals(var1);
- }
-
- public static int frequency(Collection<?> var0, Object var1) {
- int var2 = 0;
- if (var1 == null) {
- for(Object var4 : var0) {
- if (var4 == null) {
- ++var2;
- }
- }
- } else {
- for(Object var6 : var0) {
- if (var1.equals(var6)) {
- ++var2;
- }
- }
- }
-
- return var2;
- }
-
- public static boolean disjoint(Collection<?> var0, Collection<?> var1) {
- if (var0 instanceof Set && !(var1 instanceof Set) || var0.size() > var1.size()) {
- Collection var2 = var0;
- var0 = var1;
- var1 = var2;
- }
-
- for(Object var3 : var0) {
- if (var1.contains(var3)) {
- return false;
- }
- }
-
- return true;
- }
-
- public static <T> boolean addAll(Collection<? super T> var0, T... var1) {
- boolean var2 = false;
-
- for(Object var6 : var1) {
- var2 |= var0.add(var6);
- }
-
- return var2;
- }
-
- public static <E> Set<E> newSetFromMap(Map<E, Boolean> var0) {
- return new SetFromMap(var0);
- }
-
- public static <T> Queue<T> asLifoQueue(Deque<T> var0) {
- return new AsLIFOQueue(var0);
- }
-
- // $FF: synthetic method
- static boolean access$000(Object var0, Object var1) {
- return method_0(var0, var1);
- }
- }
-